package com.kykj.kykjyzw.service.impl;

import com.kykj.kykjyzw.dao.RootDao;
import com.kykj.kykjyzw.dao.UserDao;
import com.kykj.kykjyzw.entity.UserEntity;
import com.kykj.kykjyzw.service.UserService;
import com.kykj.kykjyzw.service.util.TokenToolService;
import com.kykj.kykjyzw.vo.UserVo;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Resource
    UserDao userDao;
    @Resource
    RootDao rootDao;
    @Resource
    TokenToolService tokenToolService;

    @Override
    public List<UserEntity> getAllUser() {
        return userDao.getAllUser();
    }

    @Override
    public int delUser(int uid) {
        if (userDao.delUser(uid)>0){//用户表删除用户
            if (rootDao.deleUserRootByUid(uid)>0){//角色中间表删除角色
                if (userDao.delUserDetail(uid)>0){//用户详情表删除该用户
                    return 1;
                }

            }
        }
        return 0;
    }

    @Override
    public int addUser(UserVo userVo) {
        if (userDao.addUser(userVo)>0){
            if (rootDao.addRoot(userVo.getUid(),13)>0){//默认角色添加成功!
                if (userDao.addUserDetail(userVo.getUid())>0){//添加角色详情成功!
                    return 1;
                }
            }
        }
        return 0;
    }

    @Override
    public int updateUser(UserVo userVo) {
        return  userDao.updateUser(userVo);
    }

    @Override
    public List<UserEntity> getUserByPage(String uname, int limit, int start) {
        if (!uname.equals("")){
            uname="%"+uname+"%";//增加模糊查询
        }
        return userDao.getUserByPage(uname,limit,start);
    }

    /**
     * 获取用户总数
     * @return int
     */
    @Override
    public int getUserCount() {
        return userDao.getUserCount();
    }

    /**
     * 登录
     * @param uname 用户名
     * @param upwd 密码
     * @return UserEntity
     */
    @Override
    public UserEntity doLogin(String uname, String upwd){
        return userDao.doLogin(uname,upwd);
    }

    /**
     * 登出
     * @param uname 用户名
     * @return boolean
     */
    @Override
    public boolean exitLogin(String uname) {
        return tokenToolService.delToken(uname);
    }

    /**
     * 删除用户详情
     * @param uid 用户id
     * @return int
     */
    @Override
    public int delUserDetail(int uid) {
        return userDao.delUserDetail(uid);
    }
}
